#include <memoire.h>
#include <ecrantexte.h>
#include <gdt.h>

extern "C" { void kernel(unsigned int, void*); }

int ToutTester();

void kernel(unsigned int mbootmagic, void* mbootstructuredinfo)
{
  if(ToutTester() == 0)
  {
    return;
  }

  EcranTexte ecran;
  ecran.Ecrire("Tous les tests ont reussis.\n");
  ecran.AfficherSurEcranReel();

  while(1) {}
}

int ToutTester()
{
  int testreussi = 1;
  TestEcranTexte testecrantexte;
  TestGDT testgdt;
  EcranTexte ecrantemporaire;

  if(test_CopierBlocMemoire() == 0)
  {
    testreussi = 0;
  }
  else if(testecrantexte.Test() == 0)
  {
    testreussi = 0;
    CopierBlocMemoire((void*)"E c r a n T e x t e   P r o b ", (void*)0xB8000, 30);
  }
  else if(test_RecupererTailleRam(&ecrantemporaire) == 0)
  {
    ecrantemporaire.AfficherSurEcranReel();
    testreussi = 0;
  }
  else if(testgdt.Test(&ecrantemporaire) == 0)
  {
    ecrantemporaire.AfficherSurEcranReel();
    testreussi = 0;
  }

  return testreussi;
}
